Large amounts of digital data are generated and stored every day. Whether in the form of images and videos uploaded to a social media website, reports produced by analysis servers, or electronic communication, digital data is typically written to and read from some form of digital storage medium. Many different types of storage media exist, all with different performance characteristics. Hard drives may return sequential reads faster than random reads, while flash storage may read quickly but write slowly, and caches may return results almost instantaneously on a hit. In some storage systems, many different workloads may vie for limited bandwidth to make read and write requests to the various storage media in the storage system.
Some traditional systems for apportioning bandwidth in storage systems may apportion bandwidth by representing the available bandwidth for the system as credits, assigning each workload a set number of credits, and deducting credits for each read or write request. Unfortunately, such systems may not take into account the different characteristics of different storage media or request types, instead deducting credits based on the average latency of any request of any type made to the system. As a result, these systems may become overwhelmed if too many high-latency requests are received simultaneously and/or may operate well below their maximum capacity when receiving many low-latency requests. Accordingly, the instant disclosure describes improved systems and methods for apportioning bandwidth in storage systems.